<?php
 Session_Start () ;
 Include ("../../include/garennes.cfg") ;
 Include ("../../include/init.php") ;
 Include ("../include/config.inc") ;
 verif_droits ($droit_courant, $_SESSION ["code"]) ;
 
 Include ("../../include/recup_notes_sauvegardes.php") ;
 
 $table = var_courante ("table", 0, null) ;
 $compresse = var_courante ("compresse", 0, 0) ;
 $separateur = var_courante ("separateur", 0, ";") ;
 $vue = var_courante ("vue", 0, 0) ;
 
 @Set_Time_Limit (0) ;
 
 Function sauvegarde_sql ($num, $qui, $ou, $nom, $c)
  {
   Global $id_sql, $ext_sql, $sep_rep ;
   $nom_sql = "garennes" ;
   $fichier = FOpen ($ou.$sep_rep.$nom_sql.$ext_sql, "w") ;
   $s = structure_table_SQL ($qui) ;
   //$s = filtrage_utf8 ($s) ;
   FPuts ($fichier, $s) ;
   $d = donnees_table_SQL ($qui) ;
   //$d = filtrage_utf8 ($d) ;
   FPuts ($fichier, $d) ;
   FClose ($fichier) ;
   $taille = FileSize ($ou.$sep_rep.$nom_sql.$ext_sql) ;
   If ($c)
    {
     Exec ("cd ".$ou."; tar cf ./".$nom_sql.".tar ./".$nom_sql.$ext_sql) ;
     Exec ("cd ".$ou."; gzip ./".$nom_sql.".tar") ;
     @UnLink ($ou."/".$nom_sql.$ext_sql) ;
     $nom_sql .= ".tar.gz" ;
     $efface = 0 ;
     $taille = FileSize ($ou.$sep_rep.$nom_sql) ;
     $ok = SQL_commande ("UPDATE sauvegardes SET nom_fichier='".$nom_sql."' WHERE id_sauvegarde='".$num."' LIMIT 1", $id_sql) ;
    }
   Else
    {
     $ok = SQL_commande ("UPDATE sauvegardes SET nom_fichier='".$nom_sql.$ext_sql."' WHERE id_sauvegarde='".$num."' LIMIT 1", $id_sql) ;
    }
   
   $ok = SQL_commande ("UPDATE sauvegardes SET taille='".$taille."' WHERE id_sauvegarde='".$num."' LIMIT 1", $id_sql) ;
  }

 If (PHP_OS == "Linux") { $sep_rep = "/" ; } Else { $sep_rep = "\\" ; }
 If (IsSet ($table))
  {
   $res = SQL_commande ("SELECT * FROM utilisateurs WHERE id_utilisateur='".utilparcode ($_SESSION ["code"])."' LIMIT 1", $id_sql) ;
   $ligne = SQL_tableau_associatif ($res, "") ;
   $d1 = Date ("Y-m-d") ;
   $d2 = Date ("H:i:s") ;
   $nom_rep = "s".Date ("Ymd")."_".Date ("His") ; ;
   @MkDir ($repertoire_sauvegarde.$sep_rep.$nom_rep) ;
   If ($compresse) { $c = 1 ; } Else { $c = 0 ; }
   $resultats = SQL_commande ("INSERT INTO sauvegardes (nom_repertoire,date,type,compresse,transmis,separateur,commentaires)
                               VALUES ('".$nom_rep."','".$d1." ".$d2."','".$table."','".$c."','".$t."','^".$separateur."^','Sauvegardes de ".Str_Replace ("'", "\\'", $ligne ["nom"]." ".$ligne ["prenom"])." [#".$_SESSION ["code"]."#]')", $id_sql) ;
   $resultats = SQL_commande ("SELECT id_sauvegarde FROM sauvegardes WHERE date='".$d1." ".$d2."' LIMIT 1", $id_sql) ;
   $numero = SQL_ligne_suivante ($resultats) ;
   UnSet ($f) ;
   Switch ($table)
    {
     Case "Toutes_SQL"  : $resultats = SQL_commande ("SHOW TABLES", $id_sql) ;
                          $f [0] = SQL_nbr_lignes ($resultats) ;
                          For ($i = 1 ; $i <= $f [0] ; $i++)
                           {
                            $ligne = SQL_ligne_suivante ($resultats) ;
		            $f [$i] = $ligne [0] ;
                           }
		          sauvegarde_sql ($numero [0], $f, $repertoire_sauvegarde.$sep_rep.$nom_rep, $nom_rep, $compresse) ;
		          Break ;
     Case "Profs_SQL"   : $f [0] = 12 ;
                          $f [1] = "utilisateurs" ; $f [2] = "services_prof" ; $f [3] = "appreciations" ;
                          $f [4] = "controles" ; $f [5] = "notes" ; $f [6] = "cahier_textes" ; $f [7] = "cahier_documents" ;
		          $f [8] = "cahier_type_documents" ; $f [9] = "calcul_moyenne" ; $f [10] = "memo_notes" ;
			  $f [11] = "alias" ; $f [12] = "gestion_alias" ;
		          sauvegarde_sql ($numero [0], $f, $repertoire_sauvegarde.$sep_rep.$nom_rep, $nom_rep, $compresse) ;
		          Break ;
     Case "Eleves_SQL"  : $f [0] = 3 ;
                          $f [1] = "eleves" ; $f [2] = "services_classe" ; $f [3] = "options_eleve" ;
                          sauvegarde_sql ($numero [0], $f, $repertoire_sauvegarde.$sep_rep.$nom_rep, $nom_rep, $compresse) ;
		          Break ;
     Case "Gestion_SQL" : $f [0] = 15 ;
                          $f [1] = "utilisateurs" ; $f [2] = "classes" ; $f [3] = "disciplines" ;
                          $f [4] = "etablissements" ; $f [5] = "gestion" ; $f [6] = "menus" ;
		          $f [7] = "periodes_classe" ; $f [8] = "sessions" ; $f [9] = "signatures" ; $f [10] = "themes" ;
		          $f [11] = "types_periode" ; $f [12] = "sous_disciplines" ; $f [13] = "vie_scolaire" ;
			  $f [14] = "alias" ; $f [15] = "gestion_alias" ;
		          sauvegarde_sql ($numero [0], $f, $repertoire_sauvegarde.$sep_rep.$nom_rep, $nom_rep, $compresse) ;
		          Break ;
    }
  }

 $resultats = SQL_commande ("SELECT * FROM menus WHERE numero='".$droit_courant."' AND ordre='0'", $id_sql) ;
 $l = SQL_tableau_associatif ($resultats, "") ;  
 Echo "<html><head>" ;
 entete_html ("Garennes - Sauvegarde", "travail", 1) ;
 Echo styles ("none", "none", "none", $l ["lien"], "none") ;
 Echo "<script>" ;
 Echo " function verif()" ;
 Echo " {" ;
 Echo " if (document.forme.separateur.value==\"\")" ;
 Echo " {" ;
 Echo " alert (\"Il manque le SEPARATEUR\\npour les fichiers CSV !\");" ;
 Echo " document.forme.separateur.focus();" ;
 Echo " document.forme.separateur.select();" ;
 Echo " return false;" ;
 Echo " }" ;
 Echo " else return true;" ;
 Echo " }" ;
 Echo " function envoi(nom)" ;
 Echo " {" ;
 Echo " if (verif())" ;
 Echo " {" ;
 Echo " document.forme.table.value=nom;" ;
 Echo " document.forme.submit();" ;
 Echo " }" ;
 Echo " } " ;
 Echo "function getElement(e,f){if(document.layers){\n" ;
 Echo "f=(f)?f:self\n" ;
 Echo "if(f.document.layers[e]){return f.document.layers[e]}\n" ;
 Echo "for(W=0;i<f.document.layers.length;W++){return(getElement(e,fdocument.layers[W]))}}\n" ;
 Echo "if(document.all){return document.all[e]}\n" ;
 Echo "return document.getElementById(e)}" ;
 Echo "function cache_tout(){" ;
 Echo "getElement(\"sauve_1\").style.display='none';" ;
 Echo "getElement(\"sauve_2\").style.display='none';" ;
 Echo "getElement(\"sauve_3\").style.display='none';" ;
 Echo "}" ;
 Echo "function visualise_option(nom){cache_tout();getElement(nom).style.display='block'}" ;
 Echo "</script>" ;
 Include ("../../include/opacite.js") ;
 Echo "</head>" ;
 Echo "<body id=\"id_page\" onFocus=\"intensification_opacite();\" background=\"../images/fond.png\" text=\"".$l ["couleur_texte"]."\" OnContextMenu=\"return false\">" ;
 Echo "<center><font color=\"#0000FF\">Sauvegarde&nbsp;des&nbsp;donn&eacute;es&nbsp;</font>" ;
 If (IsSet ($message)) { Echo ":&nbsp;<font color=\"#FF0000\"><blink>Effectu&eacute;e</blink></font>" ; }
 //Echo "<br>R&eacute;pertoire&nbsp;de&nbsp;sauvegarde&nbsp;:&nbsp;<b>".$repertoire_sauvegarde.$sep_rep."</b><br>" ;
 Echo "</center>" ;

 $pdt = date_sauvegarde_automatique () ;
 If ($pdt > 0) { Echo "<br><center>Prochaine sauvegarde automatique : ".decode_date_4 (Date ("Y-m-d H:i:s", $pdt))." &agrave; partir de ".decode_date_5 (Date ("Y-m-d H:i:s", $pdt))."</center>" ; }
 Else { Echo "<br><center>Aucune sauvegarde automatique programm&eacute;e.</center>" ; }

 Echo "<TABLE BORDER=\"0\" ALIGN=\"CENTER\" style=\"border-collapse:collapse\"><TR><TD vALIGN=\"TOP\">" ;
 
 Echo "<TABLE BORDER=\"1\" BORDERCOLOR=\"#000000\" ALIGN=\"CENTER\" BGCOLOR=\"".$l ["couleur_fond"]."\" CELLPADDING=\"0\" CELLSPACING=\"0\" class=\"encadre\" style=\"border-collapse:collapse\">" ;
 Echo "<TR><TD BGCOLOR=\"".$l ["lien"]."\" ALIGN=\"CENTER\">&nbsp;<B>Sauvegardes&nbsp;possibles</B>&nbsp;:&nbsp;</TD></TR>" ;
 Echo "<TR><TD ALIGN=\"CENTER\">" ;
 Echo "<A HREF=\"javascript:envoi('Toutes_SQL')\">&nbsp;Toute&nbsp;la&nbsp;base&nbsp;</A><BR>" ;
 Echo "<A HREF=\"javascript:envoi('Profs_SQL')\">&nbsp;Base&nbsp;des&nbsp;professeurs&nbsp;</A><BR>" ;
 Echo "<A HREF=\"javascript:envoi('Eleves_SQL')\">&nbsp;Base&nbsp;des&nbsp;&eacute;l&egrave;ves&nbsp;</A><BR>" ;
 Echo "<A HREF=\"javascript:envoi('Gestion_SQL')\">&nbsp;Gestion&nbsp;g&eacute;n&eacute;rale&nbsp;</A><BR>" ;
 Echo "</TD></TR></TABLE>" ;
 
 Echo "</TD><TD>&nbsp;</TD>" ;
 
 Echo "<FORM ACTION=\"./sauvegarde.php\" METHOD=\"POST\" NAME=\"forme\" onSubmit=\"return verif()\">" ;
 Echo "<INPUT TYPE=\"HIDDEN\" NAME=\"table\">" ;
 Echo "<INPUT TYPE=\"HIDDEN\" NAME=\"separateur\" value=\"".$separateur."\">" ;
 Echo "<INPUT TYPE=\"HIDDEN\" NAME=\"compresse\" VALUE=\"" ;
 If (PHP_OS == "Linux") { Echo "1" ; } Else { Echo "0" ; }
 Echo "\"></FORM>" ;
 
 $ligne  = "<TD vALIGN=\"TOP\">" ;
 $ligne .= "<TABLE BORDER=\"1\" BORDERCOLOR=\"#000000\" ALIGN=\"CENTER\" BGCOLOR=\"".$l ["couleur_fond"]."\" CELLPADDING=\"0\" CELLSPACING=\"0\" class=\"encadre\" style=\"border-collapse:collapse\">" ;
 $ligne .= "<TR><TD COLSPAN=\"5\" BGCOLOR=\"".$l ["lien"]."\" ALIGN=\"CENTER\">&nbsp;<B>&Eacute;tat&nbsp;de&nbsp;vos&nbsp;sauvegardes</B>&nbsp;</TD></TR>" ;
 $ligne .= "<TR BGCOLOR=\"".$l ["lien"]."\">" ;
 $ligne .= "<TD ALIGN=\"CENTER\">&nbsp;<B>Date</B>&nbsp;</TD>" ;
 $ligne .= "<TD ALIGN=\"CENTER\">&nbsp;<B>Heure</B>&nbsp;</TD>" ;
 $ligne .= "<TD ALIGN=\"CENTER\">&nbsp;<B>Type</B>&nbsp;</TD>" ;
 $ligne .= "<TD ALIGN=\"CENTER\">&nbsp;<B>Taille</B>&nbsp;(ko)&nbsp;</TD>" ;
 //$ligne .= "<TD ALIGN=\"CENTER\">&nbsp;<B>Compress&eacute;</B>&nbsp;</TD>" ;
 $ligne .= "</TR>" ;
 $nbr = 0 ;
 $r = SQL_commande ("SELECT * FROM sauvegardes WHERE type!='Import' AND type LIKE '%_SQL' AND commentaires LIKE '%[#".$_SESSION ["code"]."#]%' ORDER BY date DESC", $id_sql) ;
 If (SQL_nbr_lignes ($r) > 0)
  {
   $total = 0 ;
   For ($i = 0 ; $i < SQL_nbr_lignes ($r) ; $i++)
    {
     $u = SQL_tableau_associatif ($r, "") ;
     If (File_Exists ($repertoire_sauvegarde.$sep_rep.$u ["nom_repertoire"]) And File_Exists ($repertoire_sauvegarde.$sep_rep.$u ["nom_repertoire"]."/".$u ["nom_fichier"]))
      {
       $ligne .= "<TR" ;
       If ($nbr%2) { $ligne .= " BGCOLOR=\"".$l ["nom"]."\"" ; }
       $ligne .= ">" ;
       $u1 = Explode (" ", $u ["date"]) ;
       $u2 = Explode ("-", $u1 [0]) ;
       $u3 = Explode (":", $u1 [1]) ;
       $ligne .= "<TD ALIGN=\"CENTER\">&nbsp;".$u2 [2]."/".$u2 [1]."/".$u2 [0]."&nbsp;</TD>" ;
       $ligne .= "<TD ALIGN=\"CENTER\">&nbsp;".$u3 [0].":".$u3 [1].":".$u3 [2]."&nbsp;</TD>" ;
       $ligne .= "<TD ALIGN=\"CENTER\">&nbsp;<b title=\"".$repertoire_sauvegarde.$sep_rep.$u ["nom_repertoire"]."/".$u ["nom_fichier"]."\">" ;
       Switch ($u ["type"])
        {
	  Case "Toutes_SQL" : $ligne .= "Toute&nbsp;la&nbsp;base" ; Break ;
	   Case "Profs_SQL" : $ligne .= "Base&nbsp;des&nbsp;professeurs" ; Break ;
	  Case "Eleves_SQL" : $ligne .= "Base&nbsp;des&nbsp;&eacute;l&egrave;ves" ; Break ;
	 Case "Gestion_SQL" : $ligne .= "Gestion&nbsp;g&eacute;n&eacute;rale" ; Break ;
	}
       $ligne .= "</b>&nbsp;</TD>" ;
       If ($u ["taille"] < 10000) { $aff_total = $u ["taille"]."&nbsp;o" ; }
       ElseIf ($u ["taille"] < 1000000) { $aff_total = Round ($u ["taille"]/1024,1)."&nbsp;ko" ; }
       ElseIf ($u ["taille"] < 100000000) { $aff_total = Round ($u ["taille"]/(1024*1024),1)."&nbsp;Mo" ; }
       Else { $aff_total = Round ($u ["taille"]/(1024*1024*1024),1)."&nbsp;Go" ; }
       $aff_total = Str_Replace (".",",",$aff_total) ;
       $ligne .= "<TD ALIGN=\"RIGHT\">&nbsp;".$aff_total."&nbsp;</TD>" ;
       //$ligne .= "<TD ALIGN=\"center\">&nbsp;" ;
       //If ($u ["compresse"] == 1) { $ligne .= "OUI" ; } Else { $ligne .= "NON" ; }
       //$ligne .= "&nbsp;</td>" ;
       $ligne .= "</TR>" ;
       $total += $u ["taille"] ;
       $nbr++ ;
      }
     Else
      {
       $ok = SQL_commande ("DELETE FROM sauvegardes_fichiers WHERE numero='".$u ["id_sauvegarde"]."'", $id_sql) ;
       $ok = SQL_commande ("DELETE FROM sauvegardes WHERE id_sauvegarde='".$u ["id_sauvegarde"]."' LIMIT 1", $id_sql) ;
      }
    }
   $ligne .= "<TR BGCOLOR=\"".$l ["lien"]."\">" ;
   
   If ($total < 10000) { $aff_total = $total."&nbsp;o" ; }
   ElseIf ($total < 1000000) { $aff_total = Round ($total/1024,3)."&nbsp;ko" ; }
   ElseIf ($total < 100000000) { $aff_total = Round ($total/(1024*1024),3)."&nbsp;Mo" ; }
   Else { $aff_total = Round ($total/(1024*1024*1024),3)."&nbsp;Go" ; }
   $aff_total = Str_Replace (".",",",$aff_total) ;
   $ligne .= "<TD ALIGN=\"RIGHT\" COLSPAN=\"5\">&nbsp;Taille&nbsp;totale&nbsp;des&nbsp;sauvegardes&nbsp;:&nbsp;".$aff_total."&nbsp;</TD>" ;
   $ligne .= "</TR></TABLE></td>" ;
  }
 If ($nbr == 0)
  {
   Echo "<TD vALIGN=\"MIDDLE\">&nbsp;<FONT COLOR=\"#FF0000\"><BLINK><b>Vous&nbsp;n'avez&nbsp;aucune&nbsp;sauvegarde&nbsp;sur&nbsp;le&nbsp;serveur.</b></BLINK></FONT></td>" ;
  }
 Else { Echo $ligne ; }
 Echo "</TR></TABLE>" ;
 Echo "</BODY></HTML>" ;
?>